/**
 * Zilog Z80 instruction tables.
 */
module d80.z80;

/**
 * Strings and instruction lengths for Zilog Z80.
 */
struct z80 {
    string s;           /// Instruction name
    ubyte n;            /// Length of instruction in bytes
}

/**
 * Main instructions table for Zilog Z80.
 */
immutable z80[] insnz80 = [
    { "nop",                 1 },
    { "ld\tbc, ",            3 },
    { "ld\t(bc), a",         1 },
    { "inc\tbc",             1 },
    { "inc\tb",              1 },
    { "dec\tb",              1 },
    { "ld\tb, ",             2 },
    { "rlca",                1 },
    { "ex\taf, af'",         1 },
    { "add\thl, bc",         1 },
    { "ld\ta, (bc)",         1 },
    { "dec\tbc",             1 },
    { "inc\tc",              1 },
    { "dec\tc",              1 },
    { "ld\tc, ",             2 },
    { "rrca",                1 },
    { "djnz\t",              2 },
    { "ld\tde, ",            3 },
    { "ld\t(de), a",         1 },
    { "inc\tde",             1 },
    { "inc\td",              1 },
    { "dec\td",              1 },
    { "ld\td, ",             2 },
    { "rla",                 1 },
    { "jr\t",                2 },
    { "add\thl, de",         1 },
    { "ld\ta, (de)",         1 },
    { "dec\tde" ,            1 },
    { "inc\te",              1 },
    { "dec\te",              1 },
    { "ld\te, ",             2 },
    { "rra",                 1 },
    { "jr\tnz, ",            2 },
    { "ld\thl, ",            3 },
    { "ld\t(%02x%02xh), hl", 3 },
    { "inc\thl",             1 },
    { "inc\th",              1 },
    { "dec\th",              1 },
    { "ld\th, ",             2 },
    { "daa",                 1 },
    { "jr\tz, ",             2 },
    { "add\thl, hl",         1 },
    { "ld\thl, (%02x%02xh)", 3 },
    { "dec\thl",             1 },
    { "inc\tl",              1 },
    { "dec\tl",              1 },
    { "ld\tl, ",             2 },
    { "cpl",                 1 },
    { "jr\tnc, ",            2 },
    { "ld\tsp, ",            3 },
    { "ld\t(%02x%02xh), a",  3 },
    { "inc\tsp",             1 },
    { "inc\t(hl)",           1 },
    { "dec\t(hl)",           1 },
    { "ld\t(hl), ",          2 },
    { "scf",                 1 },
    { "jr\tc, ",             2 },
    { "add\thl, sp",         1 },
    { "ld\ta, (%02x%02xh)",  3 },
    { "dec\tsp",             1 },
    { "inc\ta",              1 },
    { "dec\ta",              1 },
    { "ld\ta, ",             2 },
    { "ccf",                 1 },
    { "ld\tb, b",            1 },
    { "ld\tb, c",            1 },
    { "ld\tb, d",            1 },
    { "ld\tb, e",            1 },
    { "ld\tb, h",            1 },
    { "ld\tb, l",            1 },
    { "ld\tb, (hl)",         1 },
    { "ld\tb, a",            1 },
    { "ld\tc, b",            1 },
    { "ld\tc, c",            1 },
    { "ld\tc, d",            1 },
    { "ld\tc, e",            1 },
    { "ld\tc, h",            1 },
    { "ld\tc, l",            1 },
    { "ld\tc, (hl)",         1 },
    { "ld\tc, a",            1 },
    { "ld\td, b",            1 },
    { "ld\td, c",            1 },
    { "ld\td, d",            1 },
    { "ld\td, e",            1 },
    { "ld\td, h",            1 },
    { "ld\td, l",            1 },
    { "ld\td, (hl)",         1 },
    { "ld\td, a",            1 },
    { "ld\te, b",            1 },
    { "ld\te, c",            1 },
    { "ld\te, d",            1 },
    { "ld\te, e",            1 },
    { "ld\te, h",            1 },
    { "ld\te, l",            1 },
    { "ld\te, (hl)",         1 },
    { "ld\te, a",            1 },
    { "ld\th, b",            1 },
    { "ld\th, c",            1 },
    { "ld\th, d",            1 },
    { "ld\th, e",            1 },
    { "ld\th, h",            1 },
    { "ld\th, l",            1 },
    { "ld\th, (hl)",         1 },
    { "ld\th, a",            1 },
    { "ld\tl, b",            1 },
    { "ld\tl, c",            1 },
    { "ld\tl, d",            1 },
    { "ld\tl, e",            1 },
    { "ld\tl, h",            1 },
    { "ld\tl, l",            1 },
    { "ld\tl, (hl)",         1 },
    { "ld\tl, a",            1 },
    { "ld\t(hl), b",         1 },
    { "ld\t(hl), c",         1 },
    { "ld\t(hl), d",         1 },
    { "ld\t(hl), e",         1 },
    { "ld\t(hl), h",         1 },
    { "ld\t(hl), l",         1 },
    { "halt",                1 },
    { "ld\t(hl), a",         1 },
    { "ld\ta, b",            1 },
    { "ld\ta, c",            1 },
    { "ld\ta, d",            1 },
    { "ld\ta, e",            1 },
    { "ld\ta, h",            1 },
    { "ld\ta, l",            1 },
    { "ld\ta, (hl)",         1 },
    { "ld\ta, a",            1 },
    { "add\ta, b",           1 },
    { "add\ta, c",           1 },
    { "add\ta, d",           1 },
    { "add\ta, e",           1 },
    { "add\ta, h",           1 },
    { "add\ta, l",           1 },
    { "add\ta, (hl)",        1 },
    { "add\ta, a",           1 },
    { "adc\ta, b",           1 },
    { "adc\ta, c",           1 },
    { "adc\ta, d",           1 },
    { "adc\ta, e",           1 },
    { "adc\ta, h",           1 },
    { "adc\ta, l",           1 },
    { "adc\ta, (hl)",        1 },
    { "adc\ta, a",           1 },
    { "sub\tb",              1 },
    { "sub\tc",              1 },
    { "sub\td",              1 },
    { "sub\te",              1 },
    { "sub\th",              1 },
    { "sub\tl",              1 },
    { "sub\t(hl)",           1 },
    { "sub\ta",              1 },
    { "sbc\ta, b",           1 },
    { "sbc\ta, c",           1 },
    { "sbc\ta, d",           1 },
    { "sbc\ta, e",           1 },
    { "sbc\ta, h",           1 },
    { "sbc\ta, l",           1 },
    { "sbc\ta, (hl)",        1 },
    { "sbb\ta, a",           1 },
    { "and\tb",              1 },
    { "and\tc",              1 },
    { "and\td",              1 },
    { "and\te",              1 },
    { "and\th",              1 },
    { "and\tl",              1 },
    { "and\t(hl)",           1 },
    { "and\ta",              1 },
    { "xor\tb",              1 },
    { "xor\tc",              1 },
    { "xor\td",              1 },
    { "xor\te",              1 },
    { "xor\th",              1 },
    { "xor\tl",              1 },
    { "xor\t(hl)",           1 },
    { "xor\ta",              1 },
    { "or\tb",               1 },
    { "or\tc",               1 },
    { "or\td",               1 },
    { "or\te",               1 },
    { "or\th",               1 },
    { "or\tl",               1 },
    { "or\t(hl)",            1 },
    { "or\ta",               1 },
    { "cp\tb",               1 },
    { "cp\tc",               1 },
    { "cp\td",               1 },
    { "cp\te",               1 },
    { "cp\th",               1 },
    { "cp\tl",               1 },
    { "cp\t(hl)",            1 },
    { "cp\ta",               1 },
    { "ret\tnz",             1 },
    { "pop\tbc",             1 },
    { "jp\tnz, ",            3 },
    { "jp\t",                3 },
    { "call\t nz, ",         3 },
    { "push\tbc",            1 },
    { "add\ta, ",            2 },
    { "rst\t00h",            1 },
    { "ret\tz",              1 },
    { "ret",                 1 },
    { "jp\tz, ",             3 },
    { "BITS",                2 },
    { "call\tz, ",           3 },
    { "call\t",              3 },
    { "adc\ta, ",            2 },
    { "rst\t08h",            1 },
    { "ret\tnc",             1 },
    { "pop\tde",             1 },
    { "jp\tnc, ",            3 },
    { "out\t(%02xh), a",     2 },
    { "call\tnc, ",          3 },
    { "push\tde",            1 },
    { "sub\t",               2 },
    { "rst\t10h",            1 },
    { "ret\tc",              1 },
    { "exx",                 1 },
    { "jp\tc, ",             3 },
    { "in\ta, (%02xh)",      2 },
    { "call\tc, ",           3 },
    { "IX",                  2 },
    { "sbc\ta, ",            2 },
    { "rst\t18h",            1 },
    { "ret\tpo",             1 },
    { "pop\thl",             1 },
    { "jp\tpo, ",            3 },
    { "ex\t(sp), hl",        1 },
    { "call\tpo, ",          3 },
    { "push\thl",            1 },
    { "and\t",               2 },
    { "rst\t20h",            1 },
    { "ret\tpe",             1 },
    { "jp\t(hl)",            1 },
    { "jp\tpe, ",            3 },
    { "ex\tde, hl",          1 },
    { "call\tpe, ",          3 },
    { "EXTD",                2 },
    { "xor\t",               2 },
    { "rst\t28h",            1 },
    { "ret\tp",              1 },
    { "pop\taf",             1 },
    { "jp\tp, ",             3 },
    { "di",                  1 },
    { "call\tp, ",           3 },
    { "push\taf",            1 },
    { "or\t",                2 },
    { "rst\t30h",            1 },
    { "ret\tm",              1 },
    { "ld\tsp, hl",          1 },
    { "jp\tm, ",             3 },
    { "ei",                  1 },
    { "call\tm, ",           3 },
    { "IY",                  2 },
    { "cp\t",                2 },
    { "rst\t38h",            1 }
];

/**
 * Bit instructions (CB) table for Z80.
 * n = 0 because all instructions in this table are
 *   2 bytes in length and we handle that in the
 *   primary table.
 */
immutable z80[] insnz80cb = [
    { "rlc\tb",       0 },
    { "rlc\tc",       0 },
    { "rlc\td",       0 },
    { "rlc\te",       0 },
    { "rlc\th",       0 },
    { "rlc\tl",       0 },
    { "rlc\t(hl)",    0 },
    { "rlc\ta",       0 },
    { "rrc\tb",       0 },
    { "rrc\tc",       0 },
    { "rrc\td",       0 },
    { "rrc\te",       0 },
    { "rrc\th",       0 },
    { "rrc\tl",       0 },
    { "rrc\t(hl)",    0 },
    { "rrc\ta",       0 },
    { "rl\tb",        0 },
    { "rl\tc",        0 },
    { "rl\td",        0 },
    { "rl\te",        0 },
    { "rl\th",        0 },
    { "rl\tl",        0 },
    { "rl\t(hl)",     0 },
    { "rl\ta",        0 },
    { "rr\tb",        0 },
    { "rr\tc",        0 },
    { "rr\td",        0 },
    { "rr\te",        0 },
    { "rr\th",        0 },
    { "rr\tl",        0 },
    { "rr\t(hl)",     0 },
    { "rr\ta",        0 },
    { "sla\tb",       0 },
    { "sla\tc",       0 },
    { "sla\td",       0 },
    { "sla\te",       0 },
    { "sla\th",       0 },
    { "sla\tl",       0 },
    { "sla\t(hl)",    0 },
    { "sla\ta",       0 },
    { "sra\tb",       0 },
    { "sra\tc",       0 },
    { "sra\td",       0 },
    { "sra\te",       0 },
    { "sra\th",       0 },
    { "sra\tl",       0 },
    { "sra\t(hl)",    0 },
    { "sra\ta",       0 },
    { "slr\tb",       0 },
    { "slr\tc",       0 },
    { "slr\td",       0 },
    { "slr\te",       0 },
    { "slr\th",       0 },
    { "slr\tl",       0 },
    { "slr\t(hl)",    0 },
    { "slr\ta",       0 },
    { "srr\tb",       0 },
    { "srr\tc",       0 },
    { "srr\td",       0 },
    { "srr\te",       0 },
    { "srr\th",       0 },
    { "srr\tl",       0 },
    { "srr\t(hl)",    0 },
    { "srr\ta",       0 },
    { "bit\t0, b",    0 },
    { "bit\t0, c",    0 },
    { "bit\t0, d",    0 },
    { "bit\t0, e",    0 },
    { "bit\t0, h",    0 },
    { "bit\t0, l",    0 },
    { "bit\t0, (hl)", 0 },
    { "bit\t0, a",    0 },
    { "bit\t1, b",    0 },
    { "bit\t1, c",    0 },
    { "bit\t1, d",    0 },
    { "bit\t1, e",    0 },
    { "bit\t1, h",    0 },
    { "bit\t1, l",    0 },
    { "bit\t1, (hl)", 0 },
    { "bit\t1, a",    0 },
    { "bit\t2, b",    0 },
    { "bit\t2, c",    0 },
    { "bit\t2, d",    0 },
    { "bit\t2, e",    0 },
    { "bit\t2, h",    0 },
    { "bit\t2, l",    0 },
    { "bit\t2, (hl)", 0 },
    { "bit\t2, a",    0 },
    { "bit\t3, b",    0 },
    { "bit\t3, c",    0 },
    { "bit\t3, d",    0 },
    { "bit\t3, e",    0 },
    { "bit\t3, h",    0 },
    { "bit\t3, l",    0 },
    { "bit\t3, (hl)", 0 },
    { "bit\t3, a",    0 },
    { "bit\t4, b",    0 },
    { "bit\t4, c",    0 },
    { "bit\t4, d",    0 },
    { "bit\t4, e",    0 },
    { "bit\t4, h",    0 },
    { "bit\t4, l",    0 },
    { "bit\t4, (hl)", 0 },
    { "bit\t4, a",    0 },
    { "bit\t5, b",    0 },
    { "bit\t5, c",    0 },
    { "bit\t5, d",    0 },
    { "bit\t5, e",    0 },
    { "bit\t5, h",    0 },
    { "bit\t5, l",    0 },
    { "bit\t5, (hl)", 0 },
    { "bit\t5, a",    0 },
    { "bit\t6, b",    0 },
    { "bit\t6, c",    0 },
    { "bit\t6, d",    0 },
    { "bit\t6, e",    0 },
    { "bit\t6, h",    0 },
    { "bit\t6, l",    0 },
    { "bit\t6, (hl)", 0 },
    { "bit\t6, a",    0 },
    { "bit\t7, b",    0 },
    { "bit\t7, c",    0 },
    { "bit\t7, d",    0 },
    { "bit\t7, e",    0 },
    { "bit\t7, h",    0 },
    { "bit\t7, l",    0 },
    { "bit\t7, (hl)", 0 },
    { "bit\t7, a",    0 },
    { "res\t0, b",    0 },
    { "res\t0, c",    0 },
    { "res\t0, d",    0 },
    { "res\t0, e",    0 },
    { "res\t0, h",    0 },
    { "res\t0, l",    0 },
    { "res\t0, (hl)", 0 },
    { "res\t0, a",    0 },
    { "res\t1, b",    0 },
    { "res\t1, c",    0 },
    { "res\t1, d",    0 },
    { "res\t1, e",    0 },
    { "res\t1, h",    0 },
    { "res\t1, l",    0 },
    { "res\t1, (hl)", 0 },
    { "res\t1, a",    0 },
    { "res\t2, b",    0 },
    { "res\t2, c",    0 },
    { "res\t2, d",    0 },
    { "res\t2, e",    0 },
    { "res\t2, h",    0 },
    { "res\t2, l",    0 },
    { "res\t2, (hl)", 0 },
    { "res\t2, a",    0 },
    { "res\t3, b",    0 },
    { "res\t3, c",    0 },
    { "res\t3, d",    0 },
    { "res\t3, e",    0 },
    { "res\t3, h",    0 },
    { "res\t3, l",    0 },
    { "res\t3, (hl)", 0 },
    { "res\t3, a",    0 },
    { "res\t4, b",    0 },
    { "res\t4, c",    0 },
    { "res\t4, d",    0 },
    { "res\t4, e",    0 },
    { "res\t4, h",    0 },
    { "res\t4, l",    0 },
    { "res\t4, (hl)", 0 },
    { "res\t4, a",    0 },
    { "res\t5, b",    0 },
    { "res\t5, c",    0 },
    { "res\t5, d",    0 },
    { "res\t5, e",    0 },
    { "res\t5, h",    0 },
    { "res\t5, l",    0 },
    { "res\t5, (hl)", 0 },
    { "res\t5, a",    0 },
    { "res\t6, b",    0 },
    { "res\t6, c",    0 },
    { "res\t6, d",    0 },
    { "res\t6, e",    0 },
    { "res\t6, h",    0 },
    { "res\t6, l",    0 },
    { "res\t6, (hl)", 0 },
    { "res\t6, a",    0 },
    { "res\t7, b",    0 },
    { "res\t7, c",    0 },
    { "res\t7, d",    0 },
    { "res\t7, e",    0 },
    { "res\t7, h",    0 },
    { "res\t7, l",    0 },
    { "res\t7, (hl)", 0 },
    { "res\t7, a",    0 },
    { "set\t0, b",    0 },
    { "set\t0, c",    0 },
    { "set\t0, d",    0 },
    { "set\t0, e",    0 },
    { "set\t0, h",    0 },
    { "set\t0, l",    0 },
    { "set\t0, (hl)", 0 },
    { "set\t0, a",    0 },
    { "set\t1, b",    0 },
    { "set\t1, c",    0 },
    { "set\t1, d",    0 },
    { "set\t1, e",    0 },
    { "set\t1, h",    0 },
    { "set\t1, l",    0 },
    { "set\t1, (hl)", 0 },
    { "set\t1, a",    0 },
    { "set\t2, b",    0 },
    { "set\t2, c",    0 },
    { "set\t2, d",    0 },
    { "set\t2, e",    0 },
    { "set\t2, h",    0 },
    { "set\t2, l",    0 },
    { "set\t2, (hl)", 0 },
    { "set\t2, a",    0 },
    { "set\t3, b",    0 },
    { "set\t3, c",    0 },
    { "set\t3, d",    0 },
    { "set\t3, e",    0 },
    { "set\t3, h",    0 },
    { "set\t3, l",    0 },
    { "set\t3, (hl)", 0 },
    { "set\t3, a",    0 },
    { "set\t4, b",    0 },
    { "set\t4, c",    0 },
    { "set\t4, d",    0 },
    { "set\t4, e",    0 },
    { "set\t4, h",    0 },
    { "set\t4, l",    0 },
    { "set\t4, (hl)", 0 },
    { "set\t4, a",    0 },
    { "set\t5, b",    0 },
    { "set\t5, c",    0 },
    { "set\t5, d",    0 },
    { "set\t5, e",    0 },
    { "set\t5, h",    0 },
    { "set\t5, l",    0 },
    { "set\t5, (hl)", 0 },
    { "set\t5, a",    0 },
    { "set\t6, b",    0 },
    { "set\t6, c",    0 },
    { "set\t6, d",    0 },
    { "set\t6, e",    0 },
    { "set\t6, h",    0 },
    { "set\t6, l",    0 },
    { "set\t6, (hl)", 0 },
    { "set\t6, a",    0 },
    { "set\t7, b",    0 },
    { "set\t7, c",    0 },
    { "set\t7, d",    0 },
    { "set\t7, e",    0 },
    { "set\t7, h",    0 },
    { "set\t7, l",    0 },
    { "set\t7, (hl)", 0 },
    { "set\t7, a",    0 }
];

/**
 * IX instructions (DD) table for Z80.
 * Invalid instructions are marked nop.
 */
immutable z80[] insnz80dd = [
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "add\tix, bc",           0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "add\tix, de",           0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\tix, %02x%02xh",     2 },
    { "ld\t(%02x%02xh), ix",   2 },
    { "inc\tix",               0 },
    { "inc\tixh",              0 },
    { "dec\tixh",              0 },
    { "ld\tixh, %02xh",        1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "add\tix, ix",           0 },
    { "ld\tix, (%02x%02xh)",   2 },
    { "dec\tix",               0 },
    { "inc\tixl",              0 },
    { "dec\tixl",              0 },
    { "ld\tixl, %02xh",        1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "inc\t(ix+%02xh)",       1 },
    { "dec\t(ix+%02xh)",       1 },
    { "ld\t(ix+%02xh), %02xh", 2 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "add\tix, sp",           0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\tb, ixh",            0 },
    { "ld\tb, ixl",            0 },
    { "ld\tb, (ix+%02xh)",     1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\tc, ixh",            0 },
    { "ld\tc, ixl",            0 },
    { "ld\tc, (ix+%02xh)",     1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\td, ixh",            0 },
    { "ld\td, ixl",            0 },
    { "ld\td, (ix+%02xh)",     1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\te, ixh",            0 },
    { "ld\te, ixl",            0 },
    { "ld\te, (ix+%02xh)",     1 },
    { "nop",                   0 },
    { "ld\tixh, b",            0 },
    { "ld\tixh, c",            0 },
    { "ld\tixh, d",            0 },
    { "ld\tixh, e",            0 },
    { "ld\tixh, ixh",          0 },
    { "ld\tixh, ixl",          0 },
    { "ld\th, (ix+%02xh)",     1 },
    { "ld\tixh, a",            0 },
    { "ld\tixl, b",            0 },
    { "ld\tixl, c",            0 },
    { "ld\tixl, d",            0 },
    { "ld\tixl, e",            0 },
    { "ld\tixl, ixh",          0 },
    { "ld\tixl, ixl",          0 },
    { "ld\tl, (ix+%02xh)",     1 },
    { "ld\tixl, a",            0 },
    { "ld\t(ix+%02xh), b",     1 },
    { "ld\t(ix+%02xh), c",     1 },
    { "ld\t(ix+%02xh), d",     1 },
    { "ld\t(ix+%02xh), e",     1 },
    { "ld\t(ix+%02xh), h",     1 },
    { "ld\t(ix+%02xh), l",     1 },
    { "nop",                   0 },
    { "ld\t(ix+%02xh), a",     1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\ta, ixh",            0 },
    { "ld\ta, ixl",            0 },
    { "ld\ta, (ix+%02xh)",     0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "add\ta, ixh",           0 },
    { "add\ta, ixl",           0 },
    { "add\ta, (ix+%02xh)",    1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "adc\ta, ixh",           0 },
    { "adc\ta, ixl",           0 },
    { "adc\ta, (ix+%02xh)",    0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "sub\tixh",              0 },
    { "sub\tixl",              0 },
    { "sub\t(ix+%02xh)",       1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "sbc\ta, ixh",           0 },
    { "sbc\ta, ixl",           0 },
    { "sbc\ta, (ix+%02xh)",    1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "and\tixh",              0 },
    { "and\tixl",              0 },
    { "and\t(ix+%02xh)",       1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "xor\tixh",              0 },
    { "xor\tixl",              0 },
    { "xor\t(ix+%02xh)",       1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "or\tixh",               0 },
    { "or\tixl",               0 },
    { "or\t(ix+%02xh)",        1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "cp\tixh",               0 },
    { "cp\tixl",               0 },
    { "cp\t(ix+%02xh)",        1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "IX BITS",               0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "pop\tix",               0 },
    { "nop",                   0 },
    { "ex\t(sp), ix",          0 },
    { "nop",                   0 },
    { "push\tix",              0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "jp\t(ix)",              0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\tsp, ix",            0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 }
];

/**
 * Extended instructions (ED) table for Z80.
 * Invalid instructions are marked nop.
 */
immutable z80[] insnz80ed = [
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "in\tb, (c)",          0 },
    { "out\t(c), b",         0 },
    { "sbc\thl, bc",         0 },
    { "ld\t(%02x%02xh), bc", 2 },
    { "neg",                 0 },
    { "retn",                0 },
    { "im\t0",               0 },
    { "ld\ti, a",            0 },
    { "in\tc, (c)",          0 },
    { "out\t(c), c",         0 },
    { "adc\thl, bc",         0 },
    { "ld\tbc, (%02x%02xh)", 2 },
    { "neg",                 0 },
    { "reti",                0 },
    { "im\t0/1",             0 },
    { "ld\tr, a",            0 },
    { "in\td, (c)",          0 },
    { "out\t(c), d",         0 },
    { "sbc\thl, de",         0 },
    { "ld\t(%02x%02xh), de", 2 },
    { "neg",                 0 },
    { "retn",                0 },
    { "im\t1",               0 },
    { "ld\ta, i",            0 },
    { "in\te, (c)",          0 },
    { "out\t(c), e",         0 },
    { "adc\thl, de",         0 },
    { "ld\tde, (%02x%02xh)", 2 },
    { "neg",                 0 },
    { "retn",                0 },
    { "im\t2",               0 },
    { "ld\ta, r",            0 },
    { "in\th, (c)",          0 },
    { "out\t(c), h",         0 },
    { "sbc\thl, hl",         0 },
    { "ld\t(%02x%02xh), hl", 2 },
    { "neg",                 0 },
    { "retn",                0 },
    { "im\t0",               0 },
    { "rrd",                 0 },
    { "in\tl, (c)",          0 },
    { "out\t(c), l",         0 },
    { "adc\thl, hl",         0 },
    { "ld\thl, (%02x%02xh)", 2 },
    { "neg",                 0 },
    { "retn",                0 },
    { "im\t0/1",             0 },
    { "rld",                 0 },
    { "in\t(c)",             0 },
    { "out\t(c), 0",         0 },
    { "sbc\thl, sp",         0 },
    { "ld\t(%02x%02xh), sp", 2 },
    { "neg",                 0 },
    { "retn",                0 },
    { "im\t1",               0 },
    { "nop",                 0 },
    { "in\ta, (c)",          0 },
    { "out\t(c), a",         0 },
    { "adc\thl, sp",         0 },
    { "ld\tsp, (%02x%02xh)", 2 },
    { "neg",                 0 },
    { "retn",                0 },
    { "im\t2",               0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "ldi",                 0 },
    { "cpi",                 0 },
    { "ini",                 0 },
    { "outi",                0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "ldd",                 0 },
    { "cpd",                 0 },
    { "ind",                 0 },
    { "outd",                0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "ldir",                0 },
    { "cpir",                0 },
    { "inir",                0 },
    { "otir",                0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "lddr",                0 },
    { "cpdr",                0 },
    { "indr",                0 },
    { "otdr",                0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 },
    { "nop",                 0 }
];

/**
 * IY instructions (FD) table for Z80.
 * Invalid instructions are marked nop.
 */
immutable z80[] insnz80fd = [
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "add\tiy, bc",           0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "add\tiy, de",           0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\tiy, %02x%02xh",     2 },
    { "ld\t(%02x%02xh), iy",   2 },
    { "inc\tiy",               0 },
    { "inc\tiyh",              0 },
    { "dec\tiyh",              0 },
    { "ld\tiyh, %02xh",        1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "add\tiy, iy",           0 },
    { "ld\tiy, (%02x%02xh)",   2 },
    { "dec\tiy",               0 },
    { "inc\tiyl",              0 },
    { "dec\tiyl",              0 },
    { "ld\tiyl, %02xh",        1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "inc\t(iy+%02xh)",       1 },
    { "dec\t(iy+%02xh)",       1 },
    { "ld\t(iy+%02xh), %02xh", 2 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "add\tiy, sp",           0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\tb, iyh",            0 },
    { "ld\tb, iyl",            0 },
    { "ld\tb, (iy+%02xh)",     1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\tc, iyh",            0 },
    { "ld\tc, iyl",            0 },
    { "ld\tc, (iy+%02xh)",     1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\td, iyh",            0 },
    { "ld\td, iyl",            0 },
    { "ld\td, (iy+%02xh)",     1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\te, iyh",            0 },
    { "ld\te, iyl",            0 },
    { "ld\te, (iy+%02xh)",     1 },
    { "nop",                   0 },
    { "ld\tiyh, b",            0 },
    { "ld\tiyh, c",            0 },
    { "ld\tiyh, d",            0 },
    { "ld\tiyh, e",            0 },
    { "ld\tiyh, iyh",          0 },
    { "ld\tiyh, iyl",          0 },
    { "ld\th, (iy+%02xh)",     1 },
    { "ld\tiyh, a",            0 },
    { "ld\tiyl, b",            0 },
    { "ld\tiyl, c",            0 },
    { "ld\tiyl, d",            0 },
    { "ld\tiyl, e",            0 },
    { "ld\tiyl, iyh",          0 },
    { "ld\tiyl, iyl",          0 },
    { "ld\tl, (iy+%02xh)",     1 },
    { "ld\tiyl, a",            0 },
    { "ld\t(iy+%02xh), b",     1 },
    { "ld\t(iy+%02xh), c",     1 },
    { "ld\t(iy+%02xh), d",     1 },
    { "ld\t(iy+%02xh), e",     1 },
    { "ld\t(iy+%02xh), h",     1 },
    { "ld\t(iy+%02xh), l",     1 },
    { "nop",                   0 },
    { "ld\t(iy+%02xh), a",     1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\ta, iyh",            0 },
    { "ld\ta, iyl",            0 },
    { "ld\ta, (iy+%02xh)",     0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "add\ta, iyh",           0 },
    { "add\ta, iyl",           0 },
    { "add\ta, (iy+%02xh)",    1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "adc\ta, iyh",           0 },
    { "adc\ta, iyl",           0 },
    { "adc\ta, (iy+%02xh)",    0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "sub\tiyh",              0 },
    { "sub\tiyl",              0 },
    { "sub\t(iy+%02xh)",       1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "sbc\ta, iyh",           0 },
    { "sbc\ta, iyl",           0 },
    { "sbc\ta, (iy+%02xh)",    1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "and\tiyh",              0 },
    { "and\tiyl",              0 },
    { "and\t(iy+%02xh)",       1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "xor\tiyh",              0 },
    { "xor\tiyl",              0 },
    { "xor\t(iy+%02xh)",       1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "or\tiyh",               0 },
    { "or\tiyl",               0 },
    { "or\t(iy+%02xh)",        1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "cp\tiyh",               0 },
    { "cp\tiyl",               0 },
    { "cp\t(iy+%02xh)",        1 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "IY BITS",               0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "pop\tiy",               0 },
    { "nop",                   0 },
    { "ex\t(sp), iy",          0 },
    { "nop",                   0 },
    { "push\tiy",              0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "jp\t(iy)",              0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "ld\tsp, iy",            0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 },
    { "nop",                   0 }
];

/**
 * IX bit instructions (DDCB) table for Z80.
 */
immutable z80[] insnz80ddcb = [
    { "rlc\t(ix+%02xh), b",    2 },
    { "rlc\t(ix+%02xh), c",    2 },
    { "rlc\t(ix+%02xh), d",    2 },
    { "rlc\t(ix+%02xh), e",    2 },
    { "rlc\t(ix+%02xh), h",    2 },
    { "rlc\t(ix+%02xh), l",    2 },
    { "rlc\t(ix+%02xh)",       2 },
    { "rlc\t(ix+%02xh), a",    2 },
    { "rrc\t(ix+%02xh), b",    2 },
    { "rrc\t(ix+%02xh), c",    2 },
    { "rrc\t(ix+%02xh), d",    2 },
    { "rrc\t(ix+%02xh), e",    2 },
    { "rrc\t(ix+%02xh), h",    2 },
    { "rrc\t(ix+%02xh), l",    2 },
    { "rrc\t(ix+%02xh)",       2 },
    { "rrc\t(ix+%02xh), a",    2 },
    { "rl\t(ix+%02xh), b",     2 },
    { "rl\t(ix+%02xh), c",     2 },
    { "rl\t(ix+%02xh), d",     2 },
    { "rl\t(ix+%02xh), e",     2 },
    { "rl\t(ix+%02xh), h",     2 },
    { "rl\t(ix+%02xh), l",     2 },
    { "rl\t(ix+%02xh)",        2 },
    { "rl\t(ix+%02xh), a",     2 },
    { "rr\t(ix+%02xh), b",     2 },
    { "rr\t(ix+%02xh), c",     2 },
    { "rr\t(ix+%02xh), d",     2 },
    { "rr\t(ix+%02xh), e",     2 },
    { "rr\t(ix+%02xh), h",     2 },
    { "rr\t(ix+%02xh), l",     2 },
    { "rr\t(ix+%02xh)",        2 },
    { "rr\t(ix+%02xh), a",     2 },
    { "sla\t(ix+%02xh), b",    2 },
    { "sla\t(ix+%02xh), c",    2 },
    { "sla\t(ix+%02xh), d",    2 },
    { "sla\t(ix+%02xh), e",    2 },
    { "sla\t(ix+%02xh), h",    2 },
    { "sla\t(ix+%02xh), l",    2 },
    { "sla\t(ix+%02xh)",       2 },
    { "sla\t(ix+%02xh), a",    2 },
    { "sra\t(ix+%02xh), b",    2 },
    { "sra\t(ix+%02xh), c",    2 },
    { "sra\t(ix+%02xh), d",    2 },
    { "sra\t(ix+%02xh), e",    2 },
    { "sra\t(ix+%02xh), h",    2 },
    { "sra\t(ix+%02xh), l",    2 },
    { "sra\t(ix+%02xh)",       2 },
    { "sra\t(ix+%02xh), a",    2 },
    { "sll\t(ix+%02xh), b",    2 },
    { "sll\t(ix+%02xh), c",    2 },
    { "sll\t(ix+%02xh), d",    2 },
    { "sll\t(ix+%02xh), e",    2 },
    { "sll\t(ix+%02xh), h",    2 },
    { "sll\t(ix+%02xh), l",    2 },
    { "sll\t(ix+%02xh)",       2 },
    { "sll\t(ix+%02xh), a",    2 },
    { "srl\t(ix+%02xh), b",    2 },
    { "srl\t(ix+%02xh), c",    2 },
    { "srl\t(ix+%02xh), d",    2 },
    { "srl\t(ix+%02xh), e",    2 },
    { "srl\t(ix+%02xh), h",    2 },
    { "srl\t(ix+%02xh), l",    2 },
    { "srl\t(ix+%02xh)",       2 },
    { "srl\t(ix+%02xh), a",    2 },
    { "bit\t0, (ix+%02xh)",    2 },
    { "bit\t0, (ix+%02xh)",    2 },
    { "bit\t0, (ix+%02xh)",    2 },
    { "bit\t0, (ix+%02xh)",    2 },
    { "bit\t0, (ix+%02xh)",    2 },
    { "bit\t0, (ix+%02xh)",    2 },
    { "bit\t0, (ix+%02xh)",    2 },
    { "bit\t0, (ix+%02xh)",    2 },
    { "bit\t1, (ix+%02xh)",    2 },
    { "bit\t1, (ix+%02xh)",    2 },
    { "bit\t1, (ix+%02xh)",    2 },
    { "bit\t1, (ix+%02xh)",    2 },
    { "bit\t1, (ix+%02xh)",    2 },
    { "bit\t1, (ix+%02xh)",    2 },
    { "bit\t1, (ix+%02xh)",    2 },
    { "bit\t1, (ix+%02xh)",    2 },
    { "bit\t2, (ix+%02xh)",    2 },
    { "bit\t2, (ix+%02xh)",    2 },
    { "bit\t2, (ix+%02xh)",    2 },
    { "bit\t2, (ix+%02xh)",    2 },
    { "bit\t2, (ix+%02xh)",    2 },
    { "bit\t2, (ix+%02xh)",    2 },
    { "bit\t2, (ix+%02xh)",    2 },
    { "bit\t2, (ix+%02xh)",    2 },
    { "bit\t3, (ix+%02xh)",    2 },
    { "bit\t3, (ix+%02xh)",    2 },
    { "bit\t3, (ix+%02xh)",    2 },
    { "bit\t3, (ix+%02xh)",    2 },
    { "bit\t3, (ix+%02xh)",    2 },
    { "bit\t3, (ix+%02xh)",    2 },
    { "bit\t3, (ix+%02xh)",    2 },
    { "bit\t3, (ix+%02xh)",    2 },
    { "bit\t4, (ix+%02xh)",    2 },
    { "bit\t4, (ix+%02xh)",    2 },
    { "bit\t4, (ix+%02xh)",    2 },
    { "bit\t4, (ix+%02xh)",    2 },
    { "bit\t4, (ix+%02xh)",    2 },
    { "bit\t4, (ix+%02xh)",    2 },
    { "bit\t4, (ix+%02xh)",    2 },
    { "bit\t4, (ix+%02xh)",    2 },
    { "bit\t5, (ix+%02xh)",    2 },
    { "bit\t5, (ix+%02xh)",    2 },
    { "bit\t5, (ix+%02xh)",    2 },
    { "bit\t5, (ix+%02xh)",    2 },
    { "bit\t5, (ix+%02xh)",    2 },
    { "bit\t5, (ix+%02xh)",    2 },
    { "bit\t5, (ix+%02xh)",    2 },
    { "bit\t5, (ix+%02xh)",    2 },
    { "bit\t6, (ix+%02xh)",    2 },
    { "bit\t6, (ix+%02xh)",    2 },
    { "bit\t6, (ix+%02xh)",    2 },
    { "bit\t6, (ix+%02xh)",    2 },
    { "bit\t6, (ix+%02xh)",    2 },
    { "bit\t6, (ix+%02xh)",    2 },
    { "bit\t6, (ix+%02xh)",    2 },
    { "bit\t6, (ix+%02xh)",    2 },
    { "bit\t7, (ix+%02xh)",    2 },
    { "bit\t7, (ix+%02xh)",    2 },
    { "bit\t7, (ix+%02xh)",    2 },
    { "bit\t7, (ix+%02xh)",    2 },
    { "bit\t7, (ix+%02xh)",    2 },
    { "bit\t7, (ix+%02xh)",    2 },
    { "bit\t7, (ix+%02xh)",    2 },
    { "bit\t7, (ix+%02xh)",    2 },
    { "res\t0, (ix+%02xh), b", 2 },
    { "res\t0, (ix+%02xh), c", 2 },
    { "res\t0, (ix+%02xh), d", 2 },
    { "res\t0, (ix+%02xh), e", 2 },
    { "res\t0, (ix+%02xh), h", 2 },
    { "res\t0, (ix+%02xh), l", 2 },
    { "res\t0, (ix+%02xh)",    2 },
    { "res\t0, (ix+%02xh), a", 2 },
    { "res\t1, (ix+%02xh), b", 2 },
    { "res\t1, (ix+%02xh), c", 2 },
    { "res\t1, (ix+%02xh), d", 2 },
    { "res\t1, (ix+%02xh), e", 2 },
    { "res\t1, (ix+%02xh), h", 2 },
    { "res\t1, (ix+%02xh), l", 2 },
    { "res\t1, (ix+%02xh)",    2 },
    { "res\t1, (ix+%02xh), a", 2 },
    { "res\t2, (ix+%02xh), b", 2 },
    { "res\t2, (ix+%02xh), c", 2 },
    { "res\t2, (ix+%02xh), d", 2 },
    { "res\t2, (ix+%02xh), e", 2 },
    { "res\t2, (ix+%02xh), h", 2 },
    { "res\t2, (ix+%02xh), l", 2 },
    { "res\t2, (ix+%02xh)",    2 },
    { "res\t2, (ix+%02xh), a", 2 },
    { "res\t3, (ix+%02xh), b", 2 },
    { "res\t3, (ix+%02xh), c", 2 },
    { "res\t3, (ix+%02xh), d", 2 },
    { "res\t3, (ix+%02xh), e", 2 },
    { "res\t3, (ix+%02xh), h", 2 },
    { "res\t3, (ix+%02xh), l", 2 },
    { "res\t3, (ix+%02xh)",    2 },
    { "res\t3, (ix+%02xh), a", 2 },
    { "res\t4, (ix+%02xh), b", 2 },
    { "res\t4, (ix+%02xh), c", 2 },
    { "res\t4, (ix+%02xh), d", 2 },
    { "res\t4, (ix+%02xh), e", 2 },
    { "res\t4, (ix+%02xh), h", 2 },
    { "res\t4, (ix+%02xh), l", 2 },
    { "res\t4, (ix+%02xh)",    2 },
    { "res\t4, (ix+%02xh), a", 2 },
    { "res\t5, (ix+%02xh), b", 2 },
    { "res\t5, (ix+%02xh), c", 2 },
    { "res\t5, (ix+%02xh), d", 2 },
    { "res\t5, (ix+%02xh), e", 2 },
    { "res\t5, (ix+%02xh), h", 2 },
    { "res\t5, (ix+%02xh), l", 2 },
    { "res\t5, (ix+%02xh)",    2 },
    { "res\t5, (ix+%02xh), a", 2 },
    { "res\t6, (ix+%02xh), b", 2 },
    { "res\t6, (ix+%02xh), c", 2 },
    { "res\t6, (ix+%02xh), d", 2 },
    { "res\t6, (ix+%02xh), e", 2 },
    { "res\t6, (ix+%02xh), h", 2 },
    { "res\t6, (ix+%02xh), l", 2 },
    { "res\t6, (ix+%02xh)",    2 },
    { "res\t6, (ix+%02xh), a", 2 },
    { "res\t7, (ix+%02xh), b", 2 },
    { "res\t7, (ix+%02xh), c", 2 },
    { "res\t7, (ix+%02xh), d", 2 },
    { "res\t7, (ix+%02xh), e", 2 },
    { "res\t7, (ix+%02xh), h", 2 },
    { "res\t7, (ix+%02xh), l", 2 },
    { "res\t7, (ix+%02xh)",    2 },
    { "res\t7, (ix+%02xh), a", 2 },
    { "set\t0, (ix+%02xh), b", 2 },
    { "set\t0, (ix+%02xh), c", 2 },
    { "set\t0, (ix+%02xh), d", 2 },
    { "set\t0, (ix+%02xh), e", 2 },
    { "set\t0, (ix+%02xh), h", 2 },
    { "set\t0, (ix+%02xh), l", 2 },
    { "set\t0, (ix+%02xh)",    2 },
    { "set\t0, (ix+%02xh), a", 2 },
    { "set\t1, (ix+%02xh), b", 2 },
    { "set\t1, (ix+%02xh), c", 2 },
    { "set\t1, (ix+%02xh), d", 2 },
    { "set\t1, (ix+%02xh), e", 2 },
    { "set\t1, (ix+%02xh), h", 2 },
    { "set\t1, (ix+%02xh), l", 2 },
    { "set\t1, (ix+%02xh)",    2 },
    { "set\t1, (ix+%02xh), a", 2 },
    { "set\t2, (ix+%02xh), b", 2 },
    { "set\t2, (ix+%02xh), c", 2 },
    { "set\t2, (ix+%02xh), d", 2 },
    { "set\t2, (ix+%02xh), e", 2 },
    { "set\t2, (ix+%02xh), h", 2 },
    { "set\t2, (ix+%02xh), l", 2 },
    { "set\t2, (ix+%02xh)",    2 },
    { "set\t2, (ix+%02xh), a", 2 },
    { "set\t3, (ix+%02xh), b", 2 },
    { "set\t3, (ix+%02xh), c", 2 },
    { "set\t3, (ix+%02xh), d", 2 },
    { "set\t3, (ix+%02xh), e", 2 },
    { "set\t3, (ix+%02xh), h", 2 },
    { "set\t3, (ix+%02xh), l", 2 },
    { "set\t3, (ix+%02xh)",    2 },
    { "set\t3, (ix+%02xh), a", 2 },
    { "set\t4, (ix+%02xh), b", 2 },
    { "set\t4, (ix+%02xh), c", 2 },
    { "set\t4, (ix+%02xh), d", 2 },
    { "set\t4, (ix+%02xh), e", 2 },
    { "set\t4, (ix+%02xh), h", 2 },
    { "set\t4, (ix+%02xh), l", 2 },
    { "set\t4, (ix+%02xh)",    2 },
    { "set\t4, (ix+%02xh), a", 2 },
    { "set\t5, (ix+%02xh), b", 2 },
    { "set\t5, (ix+%02xh), c", 2 },
    { "set\t5, (ix+%02xh), d", 2 },
    { "set\t5, (ix+%02xh), e", 2 },
    { "set\t5, (ix+%02xh), h", 2 },
    { "set\t5, (ix+%02xh), l", 2 },
    { "set\t5, (ix+%02xh)",    2 },
    { "set\t5, (ix+%02xh), a", 2 },
    { "set\t6, (ix+%02xh), b", 2 },
    { "set\t6, (ix+%02xh), c", 2 },
    { "set\t6, (ix+%02xh), d", 2 },
    { "set\t6, (ix+%02xh), e", 2 },
    { "set\t6, (ix+%02xh), h", 2 },
    { "set\t6, (ix+%02xh), l", 2 },
    { "set\t6, (ix+%02xh)",    2 },
    { "set\t6, (ix+%02xh), a", 2 },
    { "set\t7, (ix+%02xh), b", 2 },
    { "set\t7, (ix+%02xh), c", 2 },
    { "set\t7, (ix+%02xh), d", 2 },
    { "set\t7, (ix+%02xh), e", 2 },
    { "set\t7, (ix+%02xh), h", 2 },
    { "set\t7, (ix+%02xh), l", 2 },
    { "set\t7, (ix+%02xh)",    2 },
    { "set\t7, (ix+%02xh), a", 2 }
];

/**
 * IY bit instructions (FDCB) table for Z80.
 */
immutable z80[] insnz80fdcb = [
    { "rlc\t(iy+%02xh), b",    2 },
    { "rlc\t(iy+%02xh), c",    2 },
    { "rlc\t(iy+%02xh), d",    2 },
    { "rlc\t(iy+%02xh), e",    2 },
    { "rlc\t(iy+%02xh), h",    2 },
    { "rlc\t(iy+%02xh), l",    2 },
    { "rlc\t(iy+%02xh)",       2 },
    { "rlc\t(iy+%02xh), a",    2 },
    { "rrc\t(iy+%02xh), b",    2 },
    { "rrc\t(iy+%02xh), c",    2 },
    { "rrc\t(iy+%02xh), d",    2 },
    { "rrc\t(iy+%02xh), e",    2 },
    { "rrc\t(iy+%02xh), h",    2 },
    { "rrc\t(iy+%02xh), l",    2 },
    { "rrc\t(iy+%02xh)",       2 },
    { "rrc\t(iy+%02xh), a",    2 },
    { "rl\t(iy+%02xh), b",     2 },
    { "rl\t(iy+%02xh), c",     2 },
    { "rl\t(iy+%02xh), d",     2 },
    { "rl\t(iy+%02xh), e",     2 },
    { "rl\t(iy+%02xh), h",     2 },
    { "rl\t(iy+%02xh), l",     2 },
    { "rl\t(iy+%02xh)",        2 },
    { "rl\t(iy+%02xh), a",     2 },
    { "rr\t(iy+%02xh), b",     2 },
    { "rr\t(iy+%02xh), c",     2 },
    { "rr\t(iy+%02xh), d",     2 },
    { "rr\t(iy+%02xh), e",     2 },
    { "rr\t(iy+%02xh), h",     2 },
    { "rr\t(iy+%02xh), l",     2 },
    { "rr\t(iy+%02xh)",        2 },
    { "rr\t(iy+%02xh), a",     2 },
    { "sla\t(iy+%02xh), b",    2 },
    { "sla\t(iy+%02xh), c",    2 },
    { "sla\t(iy+%02xh), d",    2 },
    { "sla\t(iy+%02xh), e",    2 },
    { "sla\t(iy+%02xh), h",    2 },
    { "sla\t(iy+%02xh), l",    2 },
    { "sla\t(iy+%02xh)",       2 },
    { "sla\t(iy+%02xh), a",    2 },
    { "sra\t(iy+%02xh), b",    2 },
    { "sra\t(iy+%02xh), c",    2 },
    { "sra\t(iy+%02xh), d",    2 },
    { "sra\t(iy+%02xh), e",    2 },
    { "sra\t(iy+%02xh), h",    2 },
    { "sra\t(iy+%02xh), l",    2 },
    { "sra\t(iy+%02xh)",       2 },
    { "sra\t(iy+%02xh), a",    2 },
    { "sll\t(iy+%02xh), b",    2 },
    { "sll\t(iy+%02xh), c",    2 },
    { "sll\t(iy+%02xh), d",    2 },
    { "sll\t(iy+%02xh), e",    2 },
    { "sll\t(iy+%02xh), h",    2 },
    { "sll\t(iy+%02xh), l",    2 },
    { "sll\t(iy+%02xh)",       2 },
    { "sll\t(iy+%02xh), a",    2 },
    { "srl\t(iy+%02xh), b",    2 },
    { "srl\t(iy+%02xh), c",    2 },
    { "srl\t(iy+%02xh), d",    2 },
    { "srl\t(iy+%02xh), e",    2 },
    { "srl\t(iy+%02xh), h",    2 },
    { "srl\t(iy+%02xh), l",    2 },
    { "srl\t(iy+%02xh)",       2 },
    { "srl\t(iy+%02xh), a",    2 },
    { "bit\t0, (iy+%02xh)",    2 },
    { "bit\t0, (iy+%02xh)",    2 },
    { "bit\t0, (iy+%02xh)",    2 },
    { "bit\t0, (iy+%02xh)",    2 },
    { "bit\t0, (iy+%02xh)",    2 },
    { "bit\t0, (iy+%02xh)",    2 },
    { "bit\t0, (iy+%02xh)",    2 },
    { "bit\t0, (iy+%02xh)",    2 },
    { "bit\t1, (iy+%02xh)",    2 },
    { "bit\t1, (iy+%02xh)",    2 },
    { "bit\t1, (iy+%02xh)",    2 },
    { "bit\t1, (iy+%02xh)",    2 },
    { "bit\t1, (iy+%02xh)",    2 },
    { "bit\t1, (iy+%02xh)",    2 },
    { "bit\t1, (iy+%02xh)",    2 },
    { "bit\t1, (iy+%02xh)",    2 },
    { "bit\t2, (iy+%02xh)",    2 },
    { "bit\t2, (iy+%02xh)",    2 },
    { "bit\t2, (iy+%02xh)",    2 },
    { "bit\t2, (iy+%02xh)",    2 },
    { "bit\t2, (iy+%02xh)",    2 },
    { "bit\t2, (iy+%02xh)",    2 },
    { "bit\t2, (iy+%02xh)",    2 },
    { "bit\t2, (iy+%02xh)",    2 },
    { "bit\t3, (iy+%02xh)",    2 },
    { "bit\t3, (iy+%02xh)",    2 },
    { "bit\t3, (iy+%02xh)",    2 },
    { "bit\t3, (iy+%02xh)",    2 },
    { "bit\t3, (iy+%02xh)",    2 },
    { "bit\t3, (iy+%02xh)",    2 },
    { "bit\t3, (iy+%02xh)",    2 },
    { "bit\t3, (iy+%02xh)",    2 },
    { "bit\t4, (iy+%02xh)",    2 },
    { "bit\t4, (iy+%02xh)",    2 },
    { "bit\t4, (iy+%02xh)",    2 },
    { "bit\t4, (iy+%02xh)",    2 },
    { "bit\t4, (iy+%02xh)",    2 },
    { "bit\t4, (iy+%02xh)",    2 },
    { "bit\t4, (iy+%02xh)",    2 },
    { "bit\t4, (iy+%02xh)",    2 },
    { "bit\t5, (iy+%02xh)",    2 },
    { "bit\t5, (iy+%02xh)",    2 },
    { "bit\t5, (iy+%02xh)",    2 },
    { "bit\t5, (iy+%02xh)",    2 },
    { "bit\t5, (iy+%02xh)",    2 },
    { "bit\t5, (iy+%02xh)",    2 },
    { "bit\t5, (iy+%02xh)",    2 },
    { "bit\t5, (iy+%02xh)",    2 },
    { "bit\t6, (iy+%02xh)",    2 },
    { "bit\t6, (iy+%02xh)",    2 },
    { "bit\t6, (iy+%02xh)",    2 },
    { "bit\t6, (iy+%02xh)",    2 },
    { "bit\t6, (iy+%02xh)",    2 },
    { "bit\t6, (iy+%02xh)",    2 },
    { "bit\t6, (iy+%02xh)",    2 },
    { "bit\t6, (iy+%02xh)",    2 },
    { "bit\t7, (iy+%02xh)",    2 },
    { "bit\t7, (iy+%02xh)",    2 },
    { "bit\t7, (iy+%02xh)",    2 },
    { "bit\t7, (iy+%02xh)",    2 },
    { "bit\t7, (iy+%02xh)",    2 },
    { "bit\t7, (iy+%02xh)",    2 },
    { "bit\t7, (iy+%02xh)",    2 },
    { "bit\t7, (iy+%02xh)",    2 },
    { "res\t0, (iy+%02xh), b", 2 },
    { "res\t0, (iy+%02xh), c", 2 },
    { "res\t0, (iy+%02xh), d", 2 },
    { "res\t0, (iy+%02xh), e", 2 },
    { "res\t0, (iy+%02xh), h", 2 },
    { "res\t0, (iy+%02xh), l", 2 },
    { "res\t0, (iy+%02xh)",    2 },
    { "res\t0, (iy+%02xh), a", 2 },
    { "res\t1, (iy+%02xh), b", 2 },
    { "res\t1, (iy+%02xh), c", 2 },
    { "res\t1, (iy+%02xh), d", 2 },
    { "res\t1, (iy+%02xh), e", 2 },
    { "res\t1, (iy+%02xh), h", 2 },
    { "res\t1, (iy+%02xh), l", 2 },
    { "res\t1, (iy+%02xh)",    2 },
    { "res\t1, (iy+%02xh), a", 2 },
    { "res\t2, (iy+%02xh), b", 2 },
    { "res\t2, (iy+%02xh), c", 2 },
    { "res\t2, (iy+%02xh), d", 2 },
    { "res\t2, (iy+%02xh), e", 2 },
    { "res\t2, (iy+%02xh), h", 2 },
    { "res\t2, (iy+%02xh), l", 2 },
    { "res\t2, (iy+%02xh)",    2 },
    { "res\t2, (iy+%02xh), a", 2 },
    { "res\t3, (iy+%02xh), b", 2 },
    { "res\t3, (iy+%02xh), c", 2 },
    { "res\t3, (iy+%02xh), d", 2 },
    { "res\t3, (iy+%02xh), e", 2 },
    { "res\t3, (iy+%02xh), h", 2 },
    { "res\t3, (iy+%02xh), l", 2 },
    { "res\t3, (iy+%02xh)",    2 },
    { "res\t3, (iy+%02xh), a", 2 },
    { "res\t4, (iy+%02xh), b", 2 },
    { "res\t4, (iy+%02xh), c", 2 },
    { "res\t4, (iy+%02xh), d", 2 },
    { "res\t4, (iy+%02xh), e", 2 },
    { "res\t4, (iy+%02xh), h", 2 },
    { "res\t4, (iy+%02xh), l", 2 },
    { "res\t4, (iy+%02xh)",    2 },
    { "res\t4, (iy+%02xh), a", 2 },
    { "res\t5, (iy+%02xh), b", 2 },
    { "res\t5, (iy+%02xh), c", 2 },
    { "res\t5, (iy+%02xh), d", 2 },
    { "res\t5, (iy+%02xh), e", 2 },
    { "res\t5, (iy+%02xh), h", 2 },
    { "res\t5, (iy+%02xh), l", 2 },
    { "res\t5, (iy+%02xh)",    2 },
    { "res\t5, (iy+%02xh), a", 2 },
    { "res\t6, (iy+%02xh), b", 2 },
    { "res\t6, (iy+%02xh), c", 2 },
    { "res\t6, (iy+%02xh), d", 2 },
    { "res\t6, (iy+%02xh), e", 2 },
    { "res\t6, (iy+%02xh), h", 2 },
    { "res\t6, (iy+%02xh), l", 2 },
    { "res\t6, (iy+%02xh)",    2 },
    { "res\t6, (iy+%02xh), a", 2 },
    { "res\t7, (iy+%02xh), b", 2 },
    { "res\t7, (iy+%02xh), c", 2 },
    { "res\t7, (iy+%02xh), d", 2 },
    { "res\t7, (iy+%02xh), e", 2 },
    { "res\t7, (iy+%02xh), h", 2 },
    { "res\t7, (iy+%02xh), l", 2 },
    { "res\t7, (iy+%02xh)",    2 },
    { "res\t7, (iy+%02xh), a", 2 },
    { "set\t0, (iy+%02xh), b", 2 },
    { "set\t0, (iy+%02xh), c", 2 },
    { "set\t0, (iy+%02xh), d", 2 },
    { "set\t0, (iy+%02xh), e", 2 },
    { "set\t0, (iy+%02xh), h", 2 },
    { "set\t0, (iy+%02xh), l", 2 },
    { "set\t0, (iy+%02xh)",    2 },
    { "set\t0, (iy+%02xh), a", 2 },
    { "set\t1, (iy+%02xh), b", 2 },
    { "set\t1, (iy+%02xh), c", 2 },
    { "set\t1, (iy+%02xh), d", 2 },
    { "set\t1, (iy+%02xh), e", 2 },
    { "set\t1, (iy+%02xh), h", 2 },
    { "set\t1, (iy+%02xh), l", 2 },
    { "set\t1, (iy+%02xh)",    2 },
    { "set\t1, (iy+%02xh), a", 2 },
    { "set\t2, (iy+%02xh), b", 2 },
    { "set\t2, (iy+%02xh), c", 2 },
    { "set\t2, (iy+%02xh), d", 2 },
    { "set\t2, (iy+%02xh), e", 2 },
    { "set\t2, (iy+%02xh), h", 2 },
    { "set\t2, (iy+%02xh), l", 2 },
    { "set\t2, (iy+%02xh)",    2 },
    { "set\t2, (iy+%02xh), a", 2 },
    { "set\t3, (iy+%02xh), b", 2 },
    { "set\t3, (iy+%02xh), c", 2 },
    { "set\t3, (iy+%02xh), d", 2 },
    { "set\t3, (iy+%02xh), e", 2 },
    { "set\t3, (iy+%02xh), h", 2 },
    { "set\t3, (iy+%02xh), l", 2 },
    { "set\t3, (iy+%02xh)",    2 },
    { "set\t3, (iy+%02xh), a", 2 },
    { "set\t4, (iy+%02xh), b", 2 },
    { "set\t4, (iy+%02xh), c", 2 },
    { "set\t4, (iy+%02xh), d", 2 },
    { "set\t4, (iy+%02xh), e", 2 },
    { "set\t4, (iy+%02xh), h", 2 },
    { "set\t4, (iy+%02xh), l", 2 },
    { "set\t4, (iy+%02xh)",    2 },
    { "set\t4, (iy+%02xh), a", 2 },
    { "set\t5, (iy+%02xh), b", 2 },
    { "set\t5, (iy+%02xh), c", 2 },
    { "set\t5, (iy+%02xh), d", 2 },
    { "set\t5, (iy+%02xh), e", 2 },
    { "set\t5, (iy+%02xh), h", 2 },
    { "set\t5, (iy+%02xh), l", 2 },
    { "set\t5, (iy+%02xh)",    2 },
    { "set\t5, (iy+%02xh), a", 2 },
    { "set\t6, (iy+%02xh), b", 2 },
    { "set\t6, (iy+%02xh), c", 2 },
    { "set\t6, (iy+%02xh), d", 2 },
    { "set\t6, (iy+%02xh), e", 2 },
    { "set\t6, (iy+%02xh), h", 2 },
    { "set\t6, (iy+%02xh), l", 2 },
    { "set\t6, (iy+%02xh)",    2 },
    { "set\t6, (iy+%02xh), a", 2 },
    { "set\t7, (iy+%02xh), b", 2 },
    { "set\t7, (iy+%02xh), c", 2 },
    { "set\t7, (iy+%02xh), d", 2 },
    { "set\t7, (iy+%02xh), e", 2 },
    { "set\t7, (iy+%02xh), h", 2 },
    { "set\t7, (iy+%02xh), l", 2 },
    { "set\t7, (iy+%02xh)",    2 },
    { "set\t7, (iy+%02xh), a", 2 }
];
